package org.iamd.security;

import java.util.Map;
import java.util.Set;

/**
 * Потребител в системата. Потребителят е асоцииран с групи, конкретен служител,
 * както и позволени ресурси.
 * 
 * @author И. Атанасов
 */
public interface IUser {

	/**
	 * @return списък от групи, в които потребителят участва
	 */
	public Set<? extends IGroup> getGroups();

	/**
	 * @return ресурси позволени на потребителя. Взимат се предвид само такива,
	 *         които подлежат на филтрация. В този списък се включват и
	 *         ресурсите на групите, в които потребителят членува.
	 */
	public Map<SecuredResource, Set<? extends IPermissions>> getPermResources();

	/**
	 * @return идентификатор на служител, ако има такъв
	 */
	public String getPersonId();

	/**
	 * @return кратка информация за потребителя
	 */
	public String getUserInfo();

	/**
	 * @return потребителско име
	 */
	public String getUsername();

	/**
	 * @return флаг за активност на потребител
	 */
	public boolean isActive();

}